package top.xiaozhaobk.xiaofenshu.note.biz.domain.mapper;

import org.apache.ibatis.annotations.Param;
import top.xiaozhaobk.xiaofenshu.note.biz.domain.dataobject.NoteLikeDO;

import java.util.List;

/**
 * <p>
 * 笔记点赞表 Mapper 接口
 * </p>
 *
 * @author xiaozhao
 * @since 2025-01-10
 */
public interface NoteLikeDOMapper{
    /**
     * 查询笔记是否已点赞
     * @param userId
     * @param noteId
     * @return
     */
    int selectNoteIsLiked(@Param("userId") Long userId, @Param("noteId") Long noteId);

    /**
     * 查询笔记是否已点赞
     * @param userId
     * @param noteId
     * @return
     */
    int selectCountByUserIdAndNoteId(@Param("userId") Long userId, @Param("noteId") Long noteId);

    /**
     * 查询点赞笔记列表
     * @param userId
     * @return
     */
    List<NoteLikeDO> selectByUserId(@Param("userId") Long userId);

    /**
     * 查询用户点赞的笔记列表
     * @param userId
     * @param limit
     * @return
     */
    List<NoteLikeDO> selectLikedByUserIdAndLimit(@Param("userId") Long userId, @Param("limit")  int limit);

    /**
     * 新增笔记点赞记录，若已存在，则更新笔记点赞记录
     * @param noteLikeDO
     * @return
     */
    int insertOrUpdate(NoteLikeDO noteLikeDO);

    /**
     * 取消点赞
     * @param noteLikeDO
     * @return
     */
    int update2UnlikeByUserIdAndNoteId(NoteLikeDO noteLikeDO);

}
